﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.Text;
using System.IO;
using HomeCareLibrary.Core.DataContracts;

namespace HomeWizardServices
{
    // NOTE: You can use the "Rename" command on the "Refactor" menu to change the interface name "IService1" in both code and config file together.
    [ServiceContract]
    public interface IService1
    {
       
        [OperationContract]
        [WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, UriTemplate = "/getApp_Check_Promocode/")]
        Stream getApp_Check_Promocode(CheckPromocodeRequest promocodeRequest);

        [OperationContract]
        [WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, UriTemplate = "/TestMethod/")]
        string TestMethod(string name);

        [OperationContract]
        [WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, UriTemplate = "/getApp_Initial_Setup/")]
        Stream getApp_Initial_Setup(SponsorData sponsorData);

        [OperationContract]
        [WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, UriTemplate = "/getApp_Initial_Login/")]
        Stream getApp_Initial_Login(SponsorData sponsorData);

        [OperationContract]
        [WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, UriTemplate = "/getApp_Forgot_Password/")]
        Stream getApp_Forgot_Password(ForgotPasswordRequest forgotPasswordRequest);

        [OperationContract]
        [WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, UriTemplate = "/getIdeas/")]
        Stream getIdeas(Stream stream);

        [OperationContract]
        [WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, UriTemplate = "/getFeedBack/")]
        Stream getFeedBack(string feedback);

        [OperationContract]
        [WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, UriTemplate = "/getTips/")]
        Stream getTips(Stream stream);

        [OperationContract]
        [WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, UriTemplate = "/getRoutineTasks/")]
        Stream getRoutineTasks(Stream stream);

        [OperationContract]
        [WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, UriTemplate = "/getRoutineTaskList/")]
        Stream getRoutineTaskList(GetRoutineTasksRequest postdata);

        [OperationContract]
        [WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, UriTemplate = "/getApp_Reopen/")]
        Stream getApp_Reopen(AppReopenRequest appReopenRequest);

        [OperationContract]
        [WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, UriTemplate = "/getApp_PES_GetFeaturesByUserIdHomeNumber/")]
        Stream getApp_PES_GetFeaturesByUserIdHomeNumber(GetKLByUserIdHomeNumberRequest request);

        [OperationContract]
        [WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, UriTemplate = "/getApp_PES_GetFeaturesByUserIdHomeNumberDwellingType/")]
        Stream getApp_PES_GetFeaturesByUserIdHomeNumberDwellingType(GetFeaturesByUserIdHomeNumberDwellingTypeRequest request);

        [OperationContract]
        [WebInvoke(Method = "GET", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, UriTemplate = "/getApp_PES_GetCountryStates/")]
        Stream getApp_PES_GetCountryStates();

        [OperationContract]
        [WebInvoke(Method = "GET", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, UriTemplate = "/getApp_PES_GetDwellingTypes/")]
        Stream getApp_PES_GetDwellingTypes();


        [OperationContract]
        [WebInvoke(Method = "GET", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, UriTemplate = "/getApp_PES_GetFeatureCategories/")]
        Stream getApp_PES_GetFeatureCategories();

        [OperationContract]
        [WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, UriTemplate = "/getApp_PES_GetLocationByUserIdHomeNumber/")]
        Stream getApp_PES_GetLocationByUserIdHomeNumber(GetKLByUserIdHomeNumberRequest request);

        [OperationContract]
        [WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, UriTemplate = "/getApp_PES_GetPriorityLevelByUserIdHomeNumber/")]
        Stream getApp_PES_GetPriorityLevelByUserIdHomeNumber(GetKLByUserIdHomeNumberRequest request);

        [OperationContract] 
        [WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, UriTemplate = "/getApp_PES_GetGoalsByUserIdHomeNumber/")]
        Stream getApp_PES_GetGoalsByUserIdHomeNumber(GetKLByUserIdHomeNumberRequest request);

        [OperationContract] 
        [WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, UriTemplate = "/getApp_PES_GetMonthlyAlertSettingsByUserIdHomeNumber/")]
        Stream getApp_PES_GetMonthlyAlertSettingsByUserIdHomeNumber(GetKLByUserIdHomeNumberRequest request);

        [OperationContract] 
        [WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, UriTemplate = "/getApp_PES_GetUserHomes/")]
        Stream getApp_PES_GetUserHomes(GetUserHomeRequest request);

        [OperationContract] 
        [WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, UriTemplate = "/getApp_PES_GetFeaturesByDwellingCode/")]
        Stream getApp_PES_GetFeaturesByDwellingCode(GetFeaturesByDwellingTypeRequest request);

        [OperationContract]
        [WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, UriTemplate = "/getApp_PES_GetDefaultFeaturesByDwellingCode/")]
        Stream getApp_PES_GetDefaultFeaturesByDwellingCode(GetFeaturesByDwellingTypeRequest request);

        [OperationContract]
        [WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, UriTemplate = "/getApp_PES_GetFeatureById/")]
        Stream getApp_PES_GetFeatureById(GetFeaturesByIdRequest request);

        [OperationContract]
        [WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, UriTemplate = "/getApp_PES_GetKnowledgeLevelByUserIdHomeNumber/")]
        Stream getApp_PES_GetKnowledgeLevelByUserIdHomeNumber(GetKLByUserIdHomeNumberRequest request);

        [OperationContract] 
        [WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, UriTemplate = "/getApp_PES_UpdatePersonalization/")]
        Stream getApp_PES_UpdatePersonalization(PersonalizationData personalisationData);
        // TODO: Add your service operations here

        [OperationContract] 
        [WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, UriTemplate = "/getApp_MoReminder_Refresh/")]
        Stream getApp_MoReminder_Refresh(MonthlyReminderRefreshRequest request);

        [OperationContract]
        [WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, UriTemplate = "/getApp_PromoCode_Refresh/")]
        Stream getApp_PromoCode_Refresh(PromoCodeRefreshRequest request);

        [OperationContract]
        [WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, UriTemplate = "/getApp_PES_GetLocationGoalsKnowPriorityByUserIdHomeNumber/")]
        Stream getLocationGoalsKnowPriorityByUserIdHomeNum(GetKLByUserIdHomeNumberRequest request);

        [OperationContract]
        [WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, UriTemplate = "/getApp_PES_AddHome/")]
        Stream getApp_PES_AddHome(HomeData request);

        [OperationContract]
        [WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, UriTemplate = "/getApp_PES_DeleteHome/")]
        Stream getApp_PES_DeleteHome(HomeData homeData);

        [OperationContract]
        [WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, UriTemplate = "/getApp_DoneTask/")]
        Stream getApp_DoneTask(DoneTaskRequest request);

        [OperationContract]
        [WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, UriTemplate = "/getApp_GetTasks/")]
        Stream getApp_GetTasks(TasksRequest request);

        [OperationContract]
        [WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, UriTemplate = "/getApp_TurnOffTask/")]
        Stream getApp_TurnOffTask(TurnOffTaskRequest request);
        
        [OperationContract]
        [WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, UriTemplate = "/getApp_Update_UserNamePassword/")]
        Stream getApp_Update_UserNamePassword(UpdateUserNamePasswordRequest request);

        

        //[OperationContract]
        //[WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, UriTemplate = "/getApp_GetIdeas/")]
        //Stream getApp_GetIdeas(TasksRequest request);

        //[OperationContract]
        //[WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, UriTemplate = "/getApp_GetTips/")]
        //Stream getApp_GetTips(TasksRequest request);

        //[OperationContract]
        //[WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, UriTemplate = "/getApp_PES_GetMonthlySpecialFeaturesArticles/")]
        //Stream getApp_PES_GetMonthlySpecialFeaturesArticles(string date);
    }


    // Use a data contract as illustrated in the sample below to add composite types to service operations.
  
}
